package solitaire.controle;

import solitaire.application.Carte;
import solitaire.application.Sabot;
import solitaire.application.Tas;
import solitaire.application.Usine;
import solitaire.presentation.*;

public class CSabot extends Sabot {
	
	private PSabot presentation;

	public CSabot(String nom, Usine u) {
		super(nom, u);
		
		presentation = new PSabot(
				((CTasDeCartes)cachees).getPresentation(),
				((CTasDeCartes)visibles).getPresentation(),
				this);
	}
	
	public PSabot getPresentation() {
		return presentation;
	}

	public void retournerCarte() throws Exception {
		if(isCarteRetournable()) {
			super.retournerCarte();
			if(cachees.isVide()) {
				presentation.desactiverRetournerCarte();
				if(!visibles.isVide()) {
					presentation.activerRetournerTas();
				}
			}
		}
	}
	
	public void retouner() throws Exception {
		if(isRetournable()) {
			super.retourner();
			if(!isRetournable()) {
				presentation.desactiverRetournerTas();
				if(isCarteRetournable()) {
					presentation.activerRetournerCarte();
				}
			}
		}
	}
	
	public void depiler() throws Exception {
		if(!isVide()) {
			super.depiler();
			if(cachees.isVide() && visibles.isVide()) {
				presentation.desactiverRetournerTas();
			}
		}
	}
}

